package com.rzhd.coursepatriarch.common.mvp;

import android.support.v7.app.AppCompatActivity;



import java.lang.ref.Reference;
import java.lang.ref.WeakReference;

/**
 * MVP-presenter基类
 *
 * @author yql
 * @date: 2019/1/15.
 */
public abstract class BasePresenter<V>  {





    /**
     * View接口类型的弱引用
     */
    private Reference<V> mViewRef;

    /**
     * 绑定视图
     *
     * @param mView 视图
     */
    public void attachView(V mView) {
        mViewRef = new WeakReference<>(mView);
    }

    protected V getView() {
        if (isViewAttached()) {
            return mViewRef.get();
        } else {
            return null;
        }
    }

    /**
     * 判断是否绑定视图
     *
     * @return
     */
    private boolean isViewAttached() {
        return mViewRef != null && mViewRef.get() != null;
    }

    /**
     * 解绑视图
     */
    public void detachView() {

        if (mViewRef != null) {
            mViewRef.clear();
            mViewRef = null;
        }
    }



    /**
     * 初始化数据
     */
    public abstract void initData();

    //    private V mView;
//
//    public V getView() {
//        return mView;
//    }
//
//    /**
//     * 绑定视图
//     *
//     * @param mvpView 视图
//     */
//    public void attachView(V mvpView) {
//        mView = mvpView;
//    }
//
//    /**
//     * 解绑视图
//     */
//    public void detachView() {
//        mView = null;
//    }

}
